frp实现内网穿透 您所在的位置:网站首页 Truenas scale frp内网穿透 frp实现内网穿透

frp实现内网穿透

2023-07-20 07:55| 来源: 网络整理| 查看: 265

文章目录 一、frp是什么?二、使用步骤1.需要两台服务器2、下载frp 和go语言 (基于)(1)通过自定义域名访问内网的 Web 服务启动windows下安装frpc.ini (2) 配置token才能访问(3) 配置udp(4) 通过 SSH 访问内网机器(5)提供简单的文件访问服务(6)为本地 HTTP 服务启用 HTTPS6.1 首先先在frps.ini增加端口6.2.下载https证书6.3启动frpc客户端 (7) 使用 systemd更加便捷的启动frps客户端7.1 linux安装systemd7.2使用文本编辑器7.3运行启动 总结

一、frp是什么?

1、frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

二、使用步骤 1.需要两台服务器

云上服务器 1.15.180.135 本地服务器 192.168.1.48

2、下载frp 和go语言 (基于)

go语言地址:https://golang.org/doc/install#requirements 在这里插入图片描述

frp地址 https://github.com/fatedier/frp/releases 默认下载最新的 在这里插入图片描述

(1)通过自定义域名访问内网的 Web 服务

这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。 HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 vhost_http_port 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。

修改 frps.ini 文件,设置监听 HTTP 请求端口为 8081:

代码如下(示例):

云上服务器代码 1.15.180.135

[common] bind_port = 7000 vhost_http_port = 8081

本地服务器代码

修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 1.15.180.135,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains。 local_port 因为我本地服务的端口是7070

[common] server_addr = x.x.x.x server_port = 7000 [web] type = http local_port = 7070 custom_domains = www.yourdomain.com 启动

编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。

如需后台启动可以这样 本地服务器 nohup /usr/local/frp/frp_0.38.0_linux_amd64/frpc -c /usr/local/frp/frp_0.38.0_linux_amd64/frpc.ini & 云上服务器 nohup /usr/local/frp/frp_0.38.0_linux_amd64/frps -c /usr/local/frp/frp_0.38.0_linux_amd64/frps.ini &

注意:/usr/local/frp/frp_0.38.0_linux_amd64 这个路径是你解压frp后的路径,我是放在/usr/local/frp_0.38.0_linux_amd64放这个路径,如果你不是这个路径,这里要换成你存放的对应路径

运行: 在这里插入图片描述

windows下安装frpc.ini

1、服务端frps还是在原先的云上服务器 在这里插入图片描述 2、删除frps有关文件 剩下

在这里插入图片描述 3、编辑frpc.ini 在这里插入图片描述 4、在Windows PowerShell启动 要进入到当前目录,不会自行百度 执行命令 ./frpc.exe -c ./frpc.ini 在这里插入图片描述

(2) 配置token才能访问

服务端frps.ini配置

[common] bind_port = 10002 vhost_http_port = 11002 vhost_https_port = 12002 authentication_method = token authenticate_new_work_conns = true token = 123456

客户端配置frpc.ini配置

[common] server_addr = x.x.x.x server_port = 7000 authentication_method = token authenticate_new_work_conns = true token = 123456 [web] type = http local_port = 7070 custom_domains = www.yourdomain.com (3) 配置udp [common] server_addr = x.x.x.x server_port = 7000 authentication_method = token authenticate_new_work_conns = true token = 123456 [udp] type = udp # 设置协议类型为UDP local_ip = 127.0.0.1 # 设置本机IP local_port = 24642 # 设置需要进行转发的端口,可根据需求进行修改 remote_port = 8888 # 设置转发到服务器的端口,可根据需求进行修改 (4) 通过 SSH 访问内网机器

这个示例通过简单配置 TCP 类型的代理让用户访问到内网的服务器。

在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口:

[common] bind_port = 7000

在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 1.15.180.135。修改你本地的frpc.ini文件

[common] server_addr = 1.15.180.135 server_port = 7000 [ssh] type = tcp local_ip = 192.168.0.120 local_port = 22 remote_port = 6000

local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

分别启动 frps 和 frpc。

通过 SSH 访问内网机器,假设用户名为 test:

ssh -oPort=6000 [email protected]

frp 会将请求 1.15.180.135:6000 的流量转发到内网机器的 22 端口。

启动后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aKDp0ccv-1660315472196)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220810203420024.png)]

注意,要在你公网把对应的端口放行。

(5)提供简单的文件访问服务

服务端参考上面不变即可

客户端frpc.ini 内容如下:

[common] server_addr = x.x.x.x server_port = 7000 [test_static_file] type = tcp remote_port = 18001 plugin = static_file # 要对外暴露的文件目录 liunx和windows都可以 plugin_local_path = D:/test # 用户访问 URL 中会被去除的前缀,保留的内容即为要访问的文件路径 plugin_strip_prefix = static plugin_http_user = abc plugin_http_passwd = abc

分别启动 frps 和 frpc。

通过浏览器访问 http://x.x.x.x:18001/static/ 来查看位于 D:/test 目录下的文件,会要求输入已设置好的用户名和密码。 第一次访问的时候要输入账号密码,是刚才我们配置的abc 在这里插入图片描述

在这里插入图片描述

(6)为本地 HTTP 服务启用 HTTPS 6.1 首先先在frps.ini增加端口

在这里插入图片描述 注意:要在公网把4430的端口开放,后面要用到。

6.2.下载https证书

这里证书有两种方式选择 (1)阿里云的https证书下载 (2)自签https证书。(没钱买https证书可以选择自签的方式) 第一种 在这里插入图片描述 点下载 在这里插入图片描述 第二种自签方式可以看我这篇文章 自签https证书

6.3启动frpc客户端

把对应的证书放到frpc目录上 在这里插入图片描述

[common] server_addr = 1.15.180.135 server_port = 7000 [test_htts2http] type = https custom_domains = frps.zhananclub.com plugin = https2http plugin_local_addr = 127.0.0.1:4401 #http证书相关的配置 plugin_crt_path = ./8373507_frps.zhananclub.com.pem plugin_key_path = ./8373507_frps.zhananclub.com.key plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp

分别启动frps和frpc客户端(怎么启动可以看我上面的教程) 在这里插入图片描述 在这里插入图片描述 启动完演示下 在这里插入图片描述

在这里插入图片描述

如果是自签的配置如下: 在这里插入图片描述

这三个是你自签完会自动生成的文件,把对应的文件移到这个目录即可,然后修改下对应frpc.ini配置的路径

[common] server_addr = 1.15.180.135 server_port = 7000 [test_htts2http] type = https custom_domains = frps.zhananclub.com plugin = https2http plugin_local_addr = 127.0.0.1:4401 #http证书相关的配置 plugin_crt_path = ./server.crt plugin_key_path = ./server.key plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp

分别启动frps和frpc后(怎么启动可以看我上面的教程) 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

(7) 使用 systemd更加便捷的启动frps客户端 7.1 linux安装systemd

如Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd。

# yum yum install systemd # apt apt install systemd 7.2使用文本编辑器

如 vim 创建并编辑 frps.service 文件。

vim /etc/systemd/system/frps.service

写入内容

[Unit] #服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /usr/local/frp/frp_0.38.0_linux_amd64/frps -c /usr/local/frp/frp_0.38.0_linux_amd64/frps.ini [Install] WantedBy = multi-user.target

注意:这里要把ExecStart 改为你frp对应的安装路径,我的是安装在/usr/local/frp/frp_0.38.0_linux_amd64

7.3运行启动 #启动frp systemctl start frps #停止frp systemctl stop frps #重启frp systemctl restart frps #查看frp状态

执行systemctl status frps 出现下面界面表示设置成功 在这里插入图片描述 配置 frps 开机自启。

systemctl enable frps

在这里插入图片描述 以后要启动frps就简单了。

个人搭建项目代码地址: https://github.com/hongjiatao/spring-boot-anyDemo

欢迎收藏点赞三连。谢谢!有问题可以留言博主会24小时内无偿回复。

总结

后期再更新frp其他实现内网穿透的教程



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有